#include <iostream>
#include <fstream>
#include <unordered_set>
#include <vector>
using namespace std;
class Solution {
public:
    int uniqueMorseRepresentations(vector<string>& words) {
        vector<string> morse = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
        unordered_set<string> dict;
        for (auto& str : words) {
            string sub;
            for (char n : str) sub += morse[n - 'a'];
            dict.insert(sub);
        }
        return dict.size();
    }
};
int main()
{
    Solution s;
    vector<string> words = {"gin", "zen", "gig", "msg"};
    cout << s.uniqueMorseRepresentations(words) << endl;


    return 0;
}